export default {
    // 模块化后. 所有的模块都会放在stroe中的各个模块对象中,这时获取数据就只会获取到对象,需要再进一层
    // 命名空间
    namespaced: true,
    // 如果不添加命名空间,如果修改的action和mutations命名一样就会报错
    // 添加命名空间,添加后辅助函数就需要在参数1中添加对应模块名.如果不加就会无法访问对应模块
    state: {
        count: 100
    },
    getters: {
        // 书写规则和computed一样,需要添加一个有返回值的函数
        // 函数中默认传入state包含仓库中的数据
        countSqrt({ count }) {
            return Math.sqrt(count)
        }
    },
    mutations: {
        adds(state) {
            // 页面改变但不会改变开发者工具
            // setTimeout(() => {
            //     state.count++
            // }, 1000);
            state.count++

        },
        addsn(state, { n } = { n: 100 }) {
            state.count += n
        },
    },
    actions: {
        // 所以actions中都会直接接收一个简写版的state对象
        addsWait({ commit }) {
            // actions用来配置异步,但是无法直接修改仓库中的值,只能设置异步等待结束后使用state中的commit触发对应的mutations然后更改仓库数据
            // console.log(commit);
            setTimeout(() => {
                commit('adds')
            }, 1000);
        },
        addsnWait({ commit }, payload) {
            setTimeout(() => {
                // 执行含有参数的mutation函数方式和在组件中一致,第二个参数为载荷
                commit('addsn', payload)
            }, 1000)
        }
    }
}